iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 17
1

今天來介紹另一款 Linux 逆向工具,我主要拿來動態分析使用。

GDB 介紹

Wiki

GNU偵錯器(英語:GNU Debugger,縮寫:GDB),是GNU軟體系統中的標準偵錯器,此外GDB也是個具有移攜性的偵錯器,經過移攜需求的調修與重新編譯,如今許多的類UNIX作業系統上都可以使用GDB,而現有GDB所能支援除錯的程式語言有C、C++、Pascal以及FORTRAN

上述是原生的 GDB ,若想要顯示更多資訊的話,建議安裝 GDB-PEDA

安裝 GDB-PEDA

PEDA - Python Exploit Development Assistance for GDB

介面

若要執行 GDB,在 terminal 下指令:
gdb ./binary
其結果如下:

若要顯示該程式使用到的函式,在 terminal 下指令:
info func
其結果如下:

若要轉成組合語言,在 terminal 下指令:
disassemble main
其結果如下:

較常用的指令

b *記憶體位址 -> 用來設置斷點(break point)
ni -> 下一個指令(不會追進去函式裡面)
si -> 下一個指令(追進去函式裡面)
c -> 執行到斷點的地方
r -> run(開始執行程式)

小密技:按 enter 會使用上一個使用的指令,所以不用一直按

舉例如下,在 terminal 下指令b main, r 後,可得結果如下圖:

這裡就能體現使用 GDB - PEDA 的價值!因為你可以一覽無遺的(依序由上而下)看到 registers, code, stack。這些資訊在動態追蹤的時候大有幫助(當然,若沒有安裝,可以下指令 info stack, info registers 得到相對應的結果,缺點就是你要另外再下指令 )

再來就是一些顯示的指令:
x/[大小][格式](x 代表 examine)

  1. 大小可分:
    • b/h/w/g
    • b(byte) -> 1 byte
    • h(half word) -> 2 byte
    • w(word) -> 4 byte
    • g(giant word) -> 8 byte
  2. 格式可分:
    o/x/t/s/i
    • o -> octal
    • x -> hexadecimal
    • t -> binary
    • s -> string
    • i -> 組語

舉例來說,印出 0x7fffffffe590 裡的內容(結果如下):

常用指令


Reference-1
Reference-2

結論

今天介紹 Linux 的動態追蹤逆向工具,明天接著介紹專屬 Mac 的逆向工具!


上一篇
Day16 - Linux 逆向神器 - Radare2
下一篇
Day18 - Mac 逆向工具 - Hopper Disassembler
系列文
逆向工程 – 從入門到放棄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言